package com.example.test.advice.第三章_类_对象_方法.建议37_构造代码块会想你所想;

/**
 * 注意：构造代码块不会在调用this的有参构造函数中执行
 */
public class ConsructCount {

    public static void main(String[] args) {
        new Base();
        new Base("");
        new Base(0);
        System.out.println("实例对象数量："+Base.getNumOfObjects());
    }
}

class Base{

    //对象计数器
    private static int numOfObject = 0;

    {
        //构造代码块，计算产生对象数量
        numOfObject++;

    }

    public Base() {

    }

    //有参构造调用无参构造
    public Base(String str){
        this();
    }

    //有参构造调用无参构造
    public Base(int i){
        this();
    }

    //返回一个JVM中，创建了多少个实例对象
    public static int getNumOfObjects(){

        return numOfObject;
    }
}
